//
//  NetHandler.m
//  UI_封装网络请求
//
//  Created by 毛志鹏 on 14/12/4.
//  Copyright (c) 2014年 毛志鹏. All rights reserved.
//

#import "NetHandler.h"

@implementation NetHandler

+ (void)getDataWithUrl:(NSString *)str completion:(void(^)(NSData *data))block
{
    
    NSString *urlStr = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:urlStr];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:60];
    request.HTTPMethod = @"GET";
    
    // 连接服务器
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
      
        
        // 确定地址
        NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
        // 拼接一个文件地址
        NSString *path = [NSString stringWithFormat:@"%@/%ld.aa", docPath, (unsigned long)[str hash]];
        
        // 当返回的数据不是空的时候 才进行处理
        if (data != nil) {
            // 从网络上获得数据 存入到本地
            [NSKeyedArchiver archiveRootObject:data toFile:path];
            
            // 处理数据
            block(data);
            
        } else {
            // 如果没有网络 返回数据为空, 从本地读取数据
            NSData *pickData = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
                // 第一次运行时可能是空的, 所以也要判断 当读取数据不为空时才读取
            if (pickData != nil) {
                // 反归档本地数据后, 用block处理,返回
                block(pickData);
            }
        }
    }];

}






@end
